Computer networks enable communication between computing devices in various locations. Communications over computer networks may traverse many devices, such as computers, routers, hubs, switches, firewalls, and the like. Encryption of important data, such as financial transaction data, is important, to prevent unauthorized access by third parties to the data when such data is communicated over computer networks.
Data of a network session is typically encrypted using a key that is shared by one of two mechanisms. In some instances, a static key is used to encrypt data of a network session. The static key is pre-shared, that is, generated and shared before the communication session is established. The static key may be used for a long period of time, e.g., for multiple network transactions. In other instances, such as in Transport Layer Security (TLS) or Secured Socket Layer (SSL), one device will create a session key to be used to encrypt data of the communication session. The device may encrypt the session key with the public key of another device of the communication session.